# -*- coding: utf-8 -*-
from Escena import Escena
from objetos.Refrigerador import Refrigerador
from objetos.Despensa import Despensa
from objetos.Gabinete import Gabinete
from objetos.Bandeja import Bandeja
from objetos.Cuchara import Cuchara
from objetos.Tarro import Tarro
from objetos.Sobre import Sobre
from objetos.Pichel import Pichel
from objetos.Mesa import Mesa
from objetos.Grano import Grano
from objetos.Agua import Agua
from heroe import Heroe

class casa(Escena):
	
	"""
	Escena de una casa. El problema consiste en hacer helados con refresco, agua, azucar y la refrigeradora
	@since: 4/14/2011
	@version: 1.0
	"""
	
	def __init__(self):
		"""
		Constructor
		@type	self: casa
		@param	self: referencia al objeto casa actual
		"""
		#objetos={} 
		granoToki=Grano(nombre='toki')
		sobre=Sobre('sobrecito', granoToki)
		granoToki.setContenedor(sobre)
		
		granoAzucar=Grano(nombre='azucar')
		tarro=Tarro('tarro', granoAzucar)
		granoAzucar.setContenedor(tarro)
		
		elementos={}
		elementos={'tarro':tarro, 'sobrecito':sobre}
		#objetos.update(elementos)
		despensa=Despensa('despensa', 10, elementos)
		despensa.setPosicion([450, 10])
		
		agua=Agua()
		pichel=Pichel('pichel', agua)
		agua.setContenedor(pichel)
		elementos={}
		elementos={'pichel': pichel}
		#objetos.update(elementos)
		refrigerador=Refrigerador('refrigerador', 10, elementos)
		refrigerador.setPosicion([760, 125])
		
		elementos={}
		elementos={'cuchara':Cuchara('cuchara'), 'bandeja': Bandeja('bandeja')}
		#objetos.update(elementos)
		gabinete=Gabinete('gabinete', 10, elementos)
		gabinete.setPosicion([460, 320]) 
		
		mesa=Mesa('mesa', 30, {})
		mesa.setPosicion([0, 350])
		elementos={}
		elementos={'despensa':despensa, 'refrigerador':refrigerador, 'gabinete':gabinete, 'mesa':mesa}   
		#print elementos                  
		#objetos.update(elementos)

		#Set background
		self.setBackgound("imagenes/background/casa.jpg");

		# Construccion del héroe
		heroe_cocina = Heroe.Heroe("")
		heroe_cocina.vaciar()
		heroe_cocina.setImagen("imagenes/heroe.png")
		heroe_cocina.setPostura(0)
		heroe_cocina.setX(210)
		heroe_cocina.setY(370)
		desc = """<h1>Hacer un refresco</h1>
				<p width='400'>&iexcl;Hola! imagina que est&aacute;s en la cocina de tu <br />casa,
				es un d&iacute;a caluroso y quieres hacer <br />refresco.</p> 
				<h3>&iquest;C&oacute;mo lo har&iacute;as?</h3>"""
		Escena.__init__(self, 'Cocina', desc, elementos, '', heroe_cocina)
		
	def califica(self):
		"""
		Metodo para evaluar el progreso en la solucion del problema.
		@type	self: casa
		@param	self: referencia al objeto casa actual
		"""
		tor = []
		objetos = self.getDiccionarioObjetos()
		contieneIngredientes=True
		
		if not self.cumpleContieneNombre(objetos['mesa'], 'pichel'):
			tor.append("El pichel no se encuentra sobre la mesa.")
		
		if not self.cumpleContieneNombre(objetos['agua'], 'azucar'):
			tor.append("No has vertido el azúcar en el agua.")
			contieneIngredientes=False
			
		if not self.cumpleContieneNombre(objetos['agua'], 'toki'):
			tor.append("No has vertido el toki en el agua.")
			contieneIngredientes=False
			
		if not self.cumpleProp(objetos['agua'], "getRevuelto()", True) or not contieneIngredientes:
			tor.append("No has revuelto el agua con el toki y el azúcar.")
			
		if not self.cumpleProp(objetos['despensa'], "getAbierto()", False):
			tor.append("La despensa esta abierta.")
			
		if not self.cumpleProp(objetos['refrigerador'], "getAbierto()", False):
			tor.append("El refrigerador esta abierto.")
			
		if not self.cumpleProp(objetos['gabinete'], "getAbierto()", False):
			tor.append("El gabinete esta abierto.")
			
		return tor

